// 我们可以先预定好一些内容， 在根据对应的需要来触发
const EventEmitter = require("./events"); // 发布订阅在这个库的原型方法上
const util = require("util");

class Girl extends EventEmitter {}
let girl = new Girl();

const fn1 = (content) => {
  console.log("我哭", content);
};
const fn2 = (content) => {
  console.log("逛街", content);
};

// 防抖 批处理  防抖 （不停的触发 最终只触发一次） 节流 （有规律的触发）

let flushing = false;

// newListener node中自定义的名字
girl.on("newListener", function (data) {
  console.log(data); // 只要on了就会触发，这个时候时间还没有放到订阅池中 {events:[fn1]}
  if (!flushing) {
    process.nextTick(() => {
      // vue中实现异步渲染 靠的就是这种方式
      girl.emit("我失恋了");
      flushing = false;
    });
    flushing = true;
  }
});

girl.on("我失恋了", fn1);
girl.on("我失恋了", fn2);

// 发布 订阅 绑定一次， 监听绑定的事件
// on emit off once  on("newListener")
